package com.tq68.weixin.common;

import com.jfinal.kit.PropKit;
import com.jfinal.weixin.sdk.api.ApiConfig;
import com.jfinal.weixin.sdk.api.ApiResult;
import com.jfinal.weixin.sdk.api.MenuApi;
import com.jfinal.weixin.sdk.api.UserApi;
import com.jfinal.weixin.sdk.jfinal.ApiController;

public class WeixinApiController extends ApiController {
	
	/**
	 * 如果要支持多公众账号，只需要在此返回各个公众号对应的  ApiConfig 对象即可
	 * 可以通过在请求 url 中挂参数来动态从数据库中获取 ApiConfig 属性值
	 */
	public ApiConfig getApiConfig() {
		ApiConfig ac = new ApiConfig();
		
		// 配置微信 API 相关常量
		ac.setToken(PropKit.get("token"));
		ac.setAppId(PropKit.get("appId"));
		ac.setAppSecret(PropKit.get("appSecret"));
		
		/**
		 *  是否对消息进行加密，对应于微信平台的消息加解密方式：
		 *  1：true进行加密且必须配置 encodingAesKey
		 *  2：false采用明文模式，同时也支持混合模式
		 */
		ac.setEncryptMessage(PropKit.getBoolean("encryptMessage", false));
		ac.setEncodingAesKey(PropKit.get("encodingAesKey", "setting it in config file"));
		return ac;
	}
	
	public void index() {
		createMenu();
		render("index.html");
	}
	
	/**
	 * 创建菜单
	 */
	public void createMenu(){
		StringBuffer menuStr = new StringBuffer();
		menuStr.append("{\"button\": [");
		menuStr.append("		{");
		menuStr.append("		    \"name\": \"今日特价\",");
		menuStr.append("		    \"type\": \"view\",");
		menuStr.append("		    \"url\": \""+PropKit.get("discount")+"\"");
		menuStr.append("		},");
		menuStr.append("		{");
		menuStr.append("		    \"name\": \"邻里圈\",");
		menuStr.append("		    \"type\": \"view\",");
		menuStr.append("		    \"url\": \""+PropKit.get("community")+"\"");
		menuStr.append("		},");		
		menuStr.append("        {");
		menuStr.append("            \"name\": \"我的\",");
		menuStr.append("		    \"type\": \"view\",");
		menuStr.append("		    \"url\": \""+PropKit.get("login")+"\"");
		menuStr.append("        }");
		menuStr.append("    ]");
		menuStr.append("}");
		menuStr.append("}");
//		System.out.println(menuStr.toString());
		ApiResult apiResult = MenuApi.createMenu(menuStr.toString());
		if (apiResult.isSucceed()){
//			System.out.println(apiResult.getJson());
			renderText(apiResult.getJson());
		}else{
			renderText(apiResult.getErrorMsg());
		}
	}
	
	
	/**
	 * 获取公众号菜单
	 */
	public void getMenu() {
		ApiResult apiResult = MenuApi.getMenu();
		if (apiResult.isSucceed())
			renderText(apiResult.getJson());
		else
			renderText(apiResult.getErrorMsg());
	}
	
	/**
	 * 获取公众号关注用户
	 */
	public void getFollowers() {
		ApiResult apiResult = UserApi.getFollows();
		// TODO 用 jackson 解析结果出来
		renderText(apiResult.getJson());
	}
}

